In system virtualization, multiple virtual computing systems are created within a single physical computing system. The physical system can be a stand-alone computer, or alternatively, a computing system utilizing clustered computers and components. Virtual systems are independent operating environments that use virtual resources made up of logical divisions of physical resources such as processors, memory, and input/output (I/O) adapters. System virtualization is implemented through some managing functionality, typically hypervisor technology. Hypervisors, also called virtual machine managers (VMMs), use a thin layer of code in software or firmware to achieve fine-grained, dynamic resource sharing. Hypervisors are the primary technology for system virtualization because they provide the greatest level of flexibility in how virtual resources are defined and managed.
Hypervisors also provide the ability to divide physical computing system resources into isolated logical partitions. Each logical partition operates like an independent computing system running its own operating system (e.g., a virtual system). Operating systems running in a virtualized environment are often referred to as “guest machines.” Exemplary operating systems include AIX®, IBM® i, Linux®, and the virtual I/O server (VIOS). Hypervisors can allocate dedicated processors, I/O adapters, and memory to each logical partition and can also allocate shared processors to each logical partition. Unbeknownst to the logical partitions, the hypervisor creates a shared processor pool from which the hypervisor allocates virtual processors to the logical partitions as needed. In other words, the hypervisor creates virtual processors from physical processors so that logical partitions can share the physical processors while running independent operating environments. The hypervisor can also dynamically allocate and de-allocate dedicated or shared resources (such as processors, I/O, and memory) across logical partitions while the partitions are actively in use. This is known as dynamic logical partitioning or dynamic LPAR and allows the hypervisor to dynamically redefine all available system resources to reach optimum capacity for each partition.
In addition to creating and managing the logical partitions, the hypervisor manages communication between the logical partitions via a virtual switch. To facilitate communication, each logical partition may have a virtual adapter for communication between the logical partitions, via the virtual switch. The type of the virtual adapter depends on the operating system used by the logical partition. Examples of virtual adapters include virtual Ethernet adapters, virtual Fibre Channel adapters, virtual Small Computer Serial Interface (SCSI) adapters, and virtual serial adapters. Virtual adapters are often implemented through a VIOS partition which manages the physical I/O adapters (SCSI disks, Fibre Channel disks, Ethernet, or CD/DVD optical devices). The other logical partitions may be considered “clients” or virtual I/O clients (VIOCs) to the VIOS. The VIOS can provide virtualized network resources to the other logical partitions via a Shared Ethernet adapter (SEA). The SEA bridges a physical Ethernet adapter with the respective virtual adapters and may apportion network bandwidth.
Furthermore, virtualized computing systems having VIOS and client LPARs can be required to allow the VIOS to boot completely before the computing system can boot other clients, including for example, LPAR clients. This is because VIOS provides storage and networking capability or services to clients of the computing system, and thus the computing system depends on a complete system boot of VIOS in order to operate. The requirement for VIOS to boot first, forces other clients of the computing system to operate in busy mode or state until system boot of VIOS is complete. In particular, the boot wait time of VIOS is significant when considering the large amount of I/O resources that are allocated by VIOS, since boot time includes initialization of all hardware resources or devices that wait for health check, device drivers to be loaded, waiting for input/output (“I/O”) ports etc. This problem is particularly important in a MAX LPAR client environment in which processor and memory allocation to VIOS partition is minimized in order to maximize the number of LPAR client in the computer system. For example, A Max LPAR client system having 0.1 processor and 1 GB of memory, typically takes about 10-15 minutes for VIOS to boot completely before one can start booting the client LPAR client. Furthermore, since the LPAR client operates critical applications, the longer the wait time or downtime, the higher the loss of productivity of the computing system. Therefore, there exists a need to minimize the boot time of computing systems.